package com.heima.feign.article;

import com.heima.common.dtos.ArticleCommentPageDto;
import com.heima.model.article.dtos.ArticleDto;
import com.heima.model.article.dtos.AuthorDto;
import com.heima.model.comment.dtos.CommentPageDto;
import com.heima.model.media.dtos.WmNewsResultDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author Fuqiang
 * @since :2023-03-25
 */
@FeignClient("leadnews-article")
public interface ArticleFeignClient {

    /**
     * 保存文章作者信息
     *
     * @param dto
     * @return 文章作者id
     */
    @PostMapping("/api/v1/author/save")
    Integer saveAuthor(@Validated @RequestBody AuthorDto dto);

    /**
     * 创建文章信息
     *
     * @param dto
     * @return
     */
    @PostMapping("/api/v1/article/save")
    Long createArticle(@Validated @RequestBody WmNewsResultDTO dto);

    /**
     * 分页查询文章以及文章详情信息 用于全量导入es
     *
     * @param page 页码
     * @param size 页面大小
     * @return
     */
    @GetMapping("/api/v1/article/findByPage")
    List<ArticleDto> findByPage(@RequestParam("page") Integer page, @RequestParam("size") Integer size);


    /**
     * feign远程调用 ,根据articleId查询article文章以及文章详情记录
     *
     * @param articleId
     * @return
     */
    @GetMapping("/api/v1/article/findById/{id}")
    ArticleDto findById(@PathVariable("id") Long articleId);

    /**
     * 查询列表
     * @param dto
     * @return
     */
    @GetMapping("/api/v1/article/findComment")
    public List<CommentPageDto> findByPage(@RequestBody ArticleCommentPageDto dto);


}